#ifndef FONT_H
#define FONT_H

#include<stdbool.h>

#include "picture.h"

#define srcHeight 32
#define AsciiSrcHeight 128

typedef struct charOBJ
{
    enum _charType
    {
        CharType_Ascii,
        CharType_Chinese
    }charType;

    char *charPtr;
    int height;             //字符高度
    char **matBuff;         //二维取模数据
}CharOBJ;

typedef struct stringOBJ
{
    char* string;
    int height;             //字符高度
    char **matBuff;         //二维取模数据
    int width;              //字模宽度
    struct picture_pos stringPos;
    struct RGB fontRGB;
}StringOBJ;

struct Chinese_char
{
    char *ptr;          //汉字2312码
    int tar_height;     //转换后的字体高度
};

struct Ascii_char
{
    char *ptr;          //ASCII码
    int tar_height;     //转换后的字体高度
};

struct char_mat
{
    void *mat;              //点阵
    int mat_width;          //宽度
    int mat_height;         //高度

    struct RGB color;
};

/**
 * @brief 将中文字符转为点阵
 * 
 * @param _src 汉字对象
 * @param out_mat 输出点阵对象
 */
int switchChineseChar2Mat(CharOBJ *_OBJ);

/**
 * @brief 将ASCII字符转为点阵
 * 
 * @param _src ASCII字符对象
 * @param out_mat 输出点阵对象
 */
int switchAsciiChar2Mat(CharOBJ *_OBJ);

/**
 * @brief 字符串转点阵
 * 
 * @param string 输入字符串
 * @param out_mat 输出点阵
 */
int switchString2Mat(StringOBJ *_string);

/**
 * @brief 释放字符串内存
 * 
 */
void freeStringMem(StringOBJ *_obj);


#endif